package Colecciones;

import Modelo.EjecutaConsulta;
import Modelo.Fila;
import java.io.PrintStream;
import java.util.Vector;

public class Listados
{
  public static Vector getListadoTitulos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String strTablas = " FROM PS_EXT_DEGREE TIT_PER, SYSADM.PS_DEGREE_TBL TIT";

      String consulta = " SELECT EMPLID,  EXT_ORG_ID INSTITUCION_EGRESADO,  DESCRFORMAL PROFESION,  DEGREE_DT FECHA_GRADO" + strTablas + " WHERE TIT_PER.DEGREE = TIT.DEGREE";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);
      }

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Consultas.getListadoTitulos " + e.toString());
    }
    return datos;
  }

  public static Vector getListadoCargos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT US_SOC_CD CONSECUTIVO,   TRIM(DESCR) NOMBRE FROM PS_US_SOC_TBL A WHERE EFFDT = (SELECT MAX(EFFDT)               FROM PS_US_SOC_TBL B               WHERE A.US_SOC_CD = B.US_SOC_CD               AND B.EFFDT <= SYSDATE) AND UPPER(EFF_STATUS) = 'A'";

      if (p_reg > 0)
        consulta = consulta + "   AND ROWNUM <= " + String.valueOf(p_reg);

      consulta = consulta + " ORDER BY TRIM(DESCR)";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.getListadoCargos " + e.toString());
    }
    return datos;
  }

  public static Vector getListadoCargos(String strNombre, int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT US_SOC_CD CONSECUTIVO,   TRIM(DESCR) NOMBRE FROM PS_US_SOC_TBL A WHERE EFFDT = (SELECT MAX(EFFDT)               FROM PS_US_SOC_TBL B               WHERE A.US_SOC_CD = B.US_SOC_CD               AND B.EFFDT <= SYSDATE) AND UPPER(EFF_STATUS) = 'A'" +
              " AND LOWER(DESCR) LIKE LOWER('"+strNombre+"%')";

      if (p_reg > 0)
        consulta = consulta + "   AND ROWNUM <= " + String.valueOf(p_reg);

      consulta = consulta + " ORDER BY TRIM(DESCR)";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.getListadoCargos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector datosEvento(String p_crse_id)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT CT.CRSE_ID CONSECUTIVO,  CT.EFFDT FECHA_EFECTIVA,  CT.DESCR NOMBRE_CORTO,  CT.COURSE_TITLE_LONG NOMBRE_LARGO,  CT.EFF_STATUS ESTADO_EVENTO,  CL.INSTITUTION INSTITUCION,  CL.ACAD_GROUP GRUPO_ACADEMICO,  CL.CATALOG_NBR,  CL.START_DT FECHA_INICIAL,  CL.END_DT FECHA_FIN FROM PS_CRSE_CATALOG CT,  PS_CLASS_TBL CL WHERE CT.CRSE_ID = CL.CRSE_ID  AND CT.CRSE_ID = '" + p_crse_id + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Consultas.listadoEventos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoEventos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT CT.CRSE_ID CONSECUTIVO,  CT.EFFDT FECHA_EFECTIVA,  CT.DESCR NOMBRE_CORTO,  CT.COURSE_TITLE_LONG NOMBRE_LARGO,  CT.EFF_STATUS ESTADO_EVENTO,  CL.INSTITUTION INSTITUCION,  CL.ACAD_GROUP GRUPO_ACADEMICO,  CL.CATALOG_NBR,  CL.START_DT FECHA_INICIAL,  CL.END_DT FECHA_FIN FROM PS_CRSE_CATALOG CT,  PS_CLASS_TBL CL WHERE CT.CRSE_ID = CL.CRSE_ID";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);
      }

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Consultas.listadoEventos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoMaterias(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT CRSE_ID CONSECUTIVO,   DESCR NOMBRE FROM PS_CRSE_CATALOG WHERE EFF_STATUS = 'A'";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);
      }

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Consultas.listadoMaterias " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoCiclos(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT STRM CONSECUTIVO,  DESCR NOMBRE  FROM PS_TERM_TBL WHERE ACAD_CAREER = 'CNED'";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);
      }

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Consultas.listadoCiclos " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Vector listadoUsuarios(int p_reg)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PSOPRDEFN DE, SYSADM.PS_PERSONAL_DATA DT, PS_SCC_PRIORWORK PE, PS_US_SOC_TBL CA";

      String consulta = " SELECT DT.EMPLID CONSECUTIVO,   DT.FIRST_NAME_SRCH NOMBRES,   DT.LAST_NAME_SRCH APELLIDOS,   CA.DESCR CARGO" + strTablas + " WHERE DT.EMPLID = DE.EMPLID" + "   AND PE.EMPLID = DE.EMPLID" + "   AND CA.US_SOC_CD = PE.US_SOC_CD";

      if (p_reg > 0) {
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);
      }

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Consultas.getUsuarios " + e.toString());
    }
    return datos;
  }

  /**
   * @deprecated
   */
  public static Boolean autenticarUsuario(String usuario, String password)
  {
    if ((usuario != null) && (password != null) && (usuario.compareTo(password) == 0))
      return Boolean.valueOf(true);

    return Boolean.valueOf(false);
  }

  public static Vector listadoProfesiones(int p_reg)
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT US_SIC_CD CONSECUTIVO,   DESCR NOMBRE FROM PS_US_SIC_TBL A WHERE EFFDT = (SELECT MAX(EFFDT)               FROM PS_US_SIC_TBL B               WHERE A.US_SIC_CD = B.US_SIC_CD               AND B.EFFDT <= SYSDATE) AND LOWER(DESCR) != LOWER('otra')";

      if (p_reg > 0)
        consulta = consulta + " AND ROWNUM <= " + String.valueOf(p_reg);

      consulta = consulta + "  ORDER BY DESCR ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.listadoProfesiones " + e.toString());
    }
    return datos;
  }

  public static String consultarNombreProfesion(String strConsecutivo)
  {
    String strNombreProfesion = null;

    Vector datos = new Vector();
    try {
      String consulta = " SELECT   DESCR NOMBRE FROM   PS_US_SIC_TBL A WHERE A.US_SIC_CD = '" + strConsecutivo + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
      strNombreProfesion = ((Fila)datos.get(0)).getValor("NOMBRE");
    }
    catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.consultarNombreProfesion " + e.toString());
    }
    return strNombreProfesion;
  }

  public static Vector listadoCiudades(String codigo)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PUJ_SYSADM.PS_PUJ_CIUDADES C, PS_STATE_NAMES_TBL T, PS_COUNTRYTBL_LANG CL";

      String consulta = "SELECT C.CODIGO CONSECUTIVO, c.NOMBRE NOMBRE" + strTablas + " WHERE C.DEP_CODIGO= T.STATE" + " AND T.COUNTRY= CL.COUNTRY" + " AND UPPER(C.NOMBRE) NOT LIKE 'DESCONOCIDA'" + " AND C.DEP_CODIGO =  '" + codigo + "'" + " ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.listadoCiudades " + e.toString());
    }
    return datos;
  }

  public static Vector listadoCiudades()
  {
    Vector datos = new Vector();
    try {
      String strTablas = " FROM PUJ_SYSADM.PS_PUJ_CIUDADES A, PS_STATE_NAMES_TBL B";

      String consulta = " SELECT    A.CODIGO CONSECUTIVO,   A.NOMBRE NOMBRE,   A.DEP_CODIGO DEP_CONSECUTIVO " + strTablas + " WHERE" + "   NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + " ORDER BY A.DEP_CODIGO, A.NOMBRE ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.listadoCiudades " + e.toString());
    }
    return datos;
  }

  public static Vector consultarDptoPorCiudad(String strCiuConsecutivo)
  {
    Vector datos = new Vector();
    try {
      String strTablas = " FROM PUJ_SYSADM.PS_PUJ_CIUDADES A, PS_STATE_NAMES_TBL B";

      String consulta = " SELECT    B.STATE DEP_CONSECUTIVO    B.DESCR NOMBRE" + strTablas + " WHERE" + "   NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + "   A.CODIGO = '" + strCiuConsecutivo + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.consultarDptoPorCiudad " + e.toString());
    }
    return datos;
  }

  public static Vector consultarCiudadPorNombre(String strNombre)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM PUJ_SYSADM.PS_PUJ_CIUDADES A, PS_STATE_NAMES_TBL B";

      String consulta = " SELECT B.STATE DEP_CONSECUTIVO,   A.CODIGO CIU_CONSECUTIVO " + strTablas + " WHERE NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + "   AND LOWER(A.NOMBRE) = LOWER('" + strNombre + "')";

      datos = EjecutaConsulta.Ejecutar(consulta);

      if (datos.size() == 0) {
        consulta = " SELECT    B.STATE DEP_CONSECUTIVO,   A.CODIGO CIU_CONSECUTIVO " + strTablas + " WHERE NOT UPPER(A.NOMBRE) = 'DESCONOCIDA'" + "   AND A.DEP_CODIGO = B.STATE" + "   AND B.COUNTRY = 'COL'" + "   AND LOWER(A.NOMBRE) LIKE LOWER('%" + strNombre + "%')";

        datos = EjecutaConsulta.Ejecutar(consulta);
      }
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.consultarCiudadPorNombre " + e.toString());
    }
    return datos;
  }

  public static Vector listadoDepartamentos()
  {
    Vector datos = new Vector();
    try {
      String consulta = " SELECT    STATE CONSECUTIVO,   DESCR NOMBRE FROM   PS_STATE_NAMES_TBL WHERE   COUNTRY = 'COL'   AND NOT UPPER(DESCR) = 'DESCONOCIDO' ORDER BY DESCR ";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.listadoDepartamentos " + e.toString());
    }
    return datos;
  }

  public static Vector listadoDepartamentosAcademicos()
  {
    return getDepartamentosAcademicos();
  }

  public static Vector listadoGeneros()
  {
    return datosParaListas.getOtrosDatos("SEX");
  }

  public static Vector listadoEstadosCiviles()
  {
    return datosParaListas.getOtrosDatos("MAR_STATUS");
  }

  /**
   * @deprecated
   */
  public static Vector listadoNivelesAcademicos()
  {
    Vector datos = new Vector();
    Fila fGrad = new Fila();
    Fila uGrad = new Fila();
    try {
      fGrad.adicionar("CONSECUTIVO", "GRAD");
      fGrad.adicionar("NOMBRE", "Posgrado");
      uGrad.adicionar("CONSECUTIVO", "UGRD");
      uGrad.adicionar("NOMBRE", "Pregrado");
      uGrad.adicionar("CONSECUTIVO", "CNED");
      uGrad.adicionar("NOMBRE", "Educación Continua");

      datos.add(fGrad);
      datos.add(uGrad);
    } catch (Exception e) {
      e.printStackTrace();
    }

    return datos;
  }

  public static Vector getFacultades()
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM SYSADM.PSTREENODE A, SYSADM.PS_ACAD_ORG_TBL B ";

      String strTablas2 = " FROM SYSADM.PS_ACAD_ORG_TBL C";

      String strTablas3 = " FROM SYSADM.PSTREENODE D";

      String consulta = "SELECT   B.ACAD_ORG CONSECUTIVO, descrformal NOMBRE" + strTablas + " WHERE A.TREE_NAME='ACAD_ORGANIZATION'" + " AND A.TREE_NODE = B.DESCRSHORT" + " AND B.EFF_STATUS='A'" + " AND B.EFFDT = (SELECT MAX(C.EFFDT)" + strTablas2 + "                  WHERE B.INSTITUTION = C.INSTITUTION" + "                  AND B.DESCRSHORT = C.DESCRSHORT" + "                  AND C.EFFDT <= SYSDATE)" + " AND A.EFFDT = (SELECT MAX(D.EFFDT)" + strTablas3 + "                 WHERE A.TREE_NODE_NUM = D.TREE_NODE_NUM" + "                 AND D.EFFDT <= SYSDATE)" + " AND A.TREE_NODE_NUM!=1" + " AND acad_org like 'FAC%'" + " ORDER BY descrformal";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de datosParaListas.getFacultades " + e.toString());
    }

    return datos;
  }

  public static Vector getDepartamentosAcademicos()
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM SYSADM.PSTREENODE A, SYSADM.PS_ACAD_ORG_TBL B, SYSADM.PSTREEDEFN D";

      String strTablas2 = " FROM SYSADM.PSTREEDEFN D1";

      String strTablas3 = " FROM SYSADM.PS_ACAD_ORG_TBL C";

      String consulta = "SELECT  B.ACAD_ORG CONSECUTIVO, B.DESCR NOMBRE, A.PARENT_NODE_NAME FAC_CONSECUTIVO" + strTablas + " WHERE D.TREE_NAME= A.TREE_NAME" + " AND D.EFFDT = A.EFFDT" + " AND D.EFF_STATUS ='A'" + " AND D.EFFDT = (SELECT MAX(D1.EFFDT)" + strTablas2 + "                   WHERE D1.tree_name= D.tree_name" + "                   AND D1.eff_status= D.eff_status" + "                   AND D1.EFFDT <= SYSDATE)" + " AND A.TREE_NAME='ACAD_DEPARTMENT'" + " AND A.TREE_NODE = B.DESCRSHORT" + " AND B.EFF_STATUS='A'" + " AND B.EFFDT = (SELECT MAX(C.EFFDT)" + strTablas3 + "               WHERE B.INSTITUTION = C.INSTITUTION" + "               AND B.DESCRSHORT = C.DESCRSHORT" + "               AND C.EFFDT <= SYSDATE)" + " AND  A.TREE_NODE_NUM!=1" + " ORDER BY B.DESCR";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de getDepartamentosAcademicos " + e.toString());
    }

    return datos;
  }

  public static Vector getTiposDocumentos()
  {
    Vector datos = new Vector();
    try
    {
      String consulta = " SELECT NATIONAL_ID_TYPE CONSECUTIVO, DESCR NOMBRE FROM PS_NID_TYPE_TBL  WHERE COUNTRY='COL' ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de datosParaListas.getTiposDocumentos " + e.toString());
    }

    return datos;
  }

  public static Vector getTitulosAcademicos()
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM SYSADM.PS_DEGREE_TBL A";

      String strTablas2 = " FROM SYSADM.PS_DEGREE_TBL B";

      String consulta = " SELECT DEGREE CONSECUTIVO, DESCRFORMAL NOMBRE " + strTablas + " WHERE A.EFF_STATUS='A' " + " AND A.EFFDT = (SELECT MAX(B.EFFDT) " + strTablas2 + " WHERE A.DEGREE = B.DEGREE " + " AND B.EFFDT <= SYSDATE) " + " ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de datosParaListas.getProfesiones " + e.toString());
    }

    return datos;
  }

  public static Vector getUniversidades(String p_descripcion, int p_reg)
  {
    Vector datos = new Vector();
    try
    {
      String strTablas = " FROM SYSADM.PS_EXT_ORG_TBL EX, SYSADM.PS_EXT_ORG_TBL_ADM EXAD";

      String strTablas2 = " FROM SYSADM.PS_EXT_ORG_TBL EX2 ";

      String strTablas3 = " FROM SYSADM.PS_EXT_ORG_TBL EXAD2";

      String consulta = " SELECT EX.EXT_ORG_ID CONSECUTIVO, EX.DESCR50 NOMBRE" + strTablas + " WHERE EX.EXT_ORG_ID = EXAD.EXT_ORG_ID" + " AND EX.EXT_ORG_TYPE='SCHL' " + " AND   EX.EFF_STATUS='A' " + " AND (EXAD.LS_SCHOOL_TYPE = 'UNI' OR EX.EXT_ORG_ID = 'OTHR')" + " AND   EX.EFFDT = (SELECT MAX(EX2.EFFDT) " + strTablas2 + " WHERE EX.EXT_ORG_ID =EX2.EXT_ORG_ID " + " AND EX.EXT_ORG_TYPE=EX2.EXT_ORG_TYPE" + " AND EX2.EFFDT<=SYSDATE)" + " AND EXAD.EFFDT = (SELECT MAX(EXAD2.EFFDT)" + strTablas3 + " WHERE EXAD.EXT_ORG_ID =EXAD2.EXT_ORG_ID" + " AND EXAD2.EFFDT<=SYSDATE)";

      if ((p_descripcion != null) && (!(p_descripcion.equals("")))) {
        consulta = consulta + " AND EX.DESCR50 LIKE ('%" + p_descripcion + "%')";
      }

      if (p_reg > 0)
      {
        consulta = consulta + " AND ROWNUM <= " + p_reg;
      }

      consulta = consulta + " ORDER BY NOMBRE";

      datos = EjecutaConsulta.Ejecutar(consulta);
    } catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de datosParaListas.getUniversidades " + e.getMessage());
    }

    return datos;
  }

  public static String consultarNombreUniversidad(String strConsecutivo)
  {
    Vector datos = new Vector();
    String strNombreUniversidad = null;
    try
    {
      String strTablas = " FROM SYSADM.PS_EXT_ORG_TBL EX ";

      String consulta = " SELECT EX.DESCR50 NOMBRE" + strTablas + " WHERE EX.EXT_ORG_ID = '" + strConsecutivo + "'";

      datos = EjecutaConsulta.Ejecutar(consulta);
      strNombreUniversidad = ((Fila)datos.get(0)).getValor("NOMBRE");
    }
    catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de Listados.consultarNombreUniversidad " + e.toString());
    }

    return strNombreUniversidad;
  }

  public static Vector getCarrerasPregrado()
  {
    Vector vResultado = new Vector();
    try
    {
      String strTablas = " FROM SYSADM.PS_ACAD_PROG_TBL";

      String strSql = "SELECT acad_prog CONSECUTIVO, descr NOMBRE" + strTablas + " WHERE acad_career = 'UGRD'" + " ORDER BY descr";

      vResultado = EjecutaConsulta.Ejecutar(strSql);
    }
    catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de getCarrerasPregrado " + e.toString());
    }

    return vResultado;
  }

  public static Vector getCarrerasPostgrado()
  {
    Vector vResultado = new Vector();
    try
    {
      String strTablas = " FROM SYSADM.PS_ACAD_PROG_TBL";

      String strSql = "SELECT acad_prog CONSECUTIVO, descr NOMBRE" + strTablas + " WHERE acad_career = 'GRAD'" + " ORDER BY descr";

      vResultado = EjecutaConsulta.Ejecutar(strSql);
    }
    catch (Exception e) {
      e.printStackTrace();
      System.out.println("Error: en la consulta de getCarrerasPostgrado " + e.toString());
    }

    return vResultado;
  }
}